#include "mainwindow.h"
#include "ui_mainwindow.h"
#include"QShortcut"
#include"QTextEdit"
#include<iostream>
#include<fstream>
#include"string"
#include"QDebug"
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
   QMenuBar*menubar=new QMenuBar(this);//堆上创建
   this->setMenuBar(menubar);
   QMenu* menu1=new QMenu("文件&F");//取名加创建元素以及添加快捷键
   QMenu* menu2=new QMenu("编辑&E");
   QMenu* menu3=new QMenu("构建&B");

   QMenu* menu4=new QMenu("调试");
   QShortcut* key=new QShortcut(this);
   key->setKey(QKeySequence("Alt+D"));//使用快捷键展开menu4
   connect(key,&QShortcut::activated,this,[=](){
       // 在鼠标位置弹出（推荐）
       menu4->popup(QCursor::pos());});
   menubar->addMenu(menu1);//添加到菜单栏
   menubar->addMenu(menu2);
   menubar->addMenu(menu3);
   menubar->addMenu(menu4);
   QAction* action1=new QAction("保存");//菜单项
   QAction* action2=new QAction("另存为");
   QAction* action3=new QAction("开始调试");
   QMenu*childmenu1=new QMenu("最近访问的文件");//子菜单
   QAction* action4=new QAction("文件");
   menu1->addMenu(childmenu1);
   menu1->addSeparator();//分割菜单项
   menu1->addAction(action1);
   menu1->addSeparator();
   menu1->addAction(action2);
   menu1->addSeparator();
   menu4->addAction(action3);
   childmenu1->addAction(action4);
   //创建多行文本输入的中央控件
   edit=new QTextEdit(this);
   this->setCentralWidget(edit);
   edit->setPlaceholderText("输入文本.....");
   connect(action1,&QAction::triggered,this,&MainWindow::save);
   connect(action4,&QAction::triggered,this,&MainWindow::load);


}


MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::save()
{   //创建输出流对象并打开文件
    std::ofstream file("C:\\Users\\x\\Desktop\\book.txt");
     if(!file.is_open())
     {
         qDebug()<<"打开文件失败";
         return ;
     }
     QString content= edit->toPlainText();
     file<<content.toStdString();
    file.close();
}
void MainWindow::load()
{
    std::ifstream file("C:\\Users\\x\\Desktop\\book.txt");

    if(!file)
    {
        qDebug()<<"打开文件失败";
        return ;
    }
    std::string line;
    std::string text;
    QString content;
    while(std::getline(file,line))
    {
       text+=line;//用字符串来获取所有的数据，这样才不会每行写入覆盖原有的
       text+="\n";

    }

    file.close();
    content=QString::fromStdString(text);
    edit->setPlainText(content);

}

